python3小白课:解锁你心仪的三方包
三方包管理仓库
PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI。
它的网址为(如果访问比较慢可以寻找一些国内的镜像源站如清华大学包源https://www.lfd.uci.edu/~gohlke/pythonlibs/,或者扶墙):

查看、下载三方包
无需注册,你可以输入你想要查看或下载的包名,搜索详细信息,我们来随意搜索一个,比如做爬虫的一个很不错的三方包requests。输入并点击搜索按钮后会跳转到结果界面:

可以看到有很多很多个搜索结果,可以点击进去最匹配的那个结果。这里看到的2.23.0是最新版本的版本号。

如上图所示,我们进入了包的详情页面,在这里可以看到包的最新版本,底下的pip install requests是使用包管理工具pip来下载包的命令行,可以复制该行放到cmd中执行。关于包管理工具pip,后面我们会再详细讲解。
右上角是现在的版本是否为最新版本以及该版本的发布日期等信息。
在下面正文内容的左侧边栏有一个导航条,如图我们标注出了功能信息,默认进入的是项目描述页,会告诉我们这个包是做啥的,你可以了解一下,该信息由包的开发者提供,如果开发者比较懒,你也可能看不到啥信息。
发行历史部分是查看历史版本时间线用的,如果你需要下载一个指定的历史已发布的版本可以从这里进入。

下载文件部分是展示有哪些资源可供下载的。你可以查看文件类型,适合的python版本,上传日期,哈希值等信息。还可以点击链接进行下载。
比如这里我们看到有两个资源可供下载,.whl文件是wheel文件,轮子的意思,我觉得取的寓意很好,下载了轮子你就不用重复造轮子了。这是python打包中比较新的一种很不错的打包格式,是编译过的包文件,不需要下载代码后自己本机编译,提高了安装的成功率。下载后可以直接通过pip包管理工具安装,网上有些说法是说需要先安装wheel这个三方包才能安装,实测是不需要的。而安装wheel这个库之后可以自己来打包自己的whl文件。
[!tip]
你可以尝试把下载好的whl文件后缀名修改为zip,发现它可以用压缩软件打开,实际它是一个压缩打包文件。
另一种格式是tar.gz格式,这是源码文件压缩格式,在有能用的whl包的时候我们都不太推荐用这种格式,因为有的时候需要你自己本机编译一些原始代码,如果电脑中缺少某些编译库,则会出现各种各样的报错问题,所以不到不得已不使用。
可能还有一些其他你可能见到的格式,你都可以从网上找到对应的安装方法。
上面讲的是到pypi官网去找到包并下载的,这种操作比较适合给一些公司内网(不能连接外网下载)离线安装,或者想看看有些什么包可以用的情况,实际我们在知道要安装什么包的时候,极少会登录pypi官网去下载。
自己贡献三方库
除了使用全球开发者提供的各种各样的三方库之外,你也可以贡献自己的三方库。
只需要在pypi官网注册登录并按照要求上传相关的文件即可。需要注意自己注册的三方库名字不能跟官网中已有的重复即可,这个在注册项目的时候是可以搜索看一下的。
关于这块内容,入门的同学们可以不做掌握,如果大家感兴趣的话,今后在进阶或高级课程中会详细再跟大家讲解。
pip包管理工具
前面我们已经提到了pip这款包管理工具,同很多其他编程语言一样,通过这款工具,我们可以轻松的做到python的三方库的管理、安装、卸载等操作。
这部分我们来着重讲解一下日常常见的使用。
pip工具是一个命令行工具,可以在cmd命令提示符中使用。目前的python安装包通常都会自带pip工具一起安装的,也可以自己去下载安装,可以看一下我们第3课的截图,已经默认安装了。
可以在cmd中输入命令查看是否已安装:
pip --version
如果成功弹出版本号,说明安装成功而且可以正常调用。
如果告诉你找不到pip这款工具,首先你可以看一下环境变量中是否已经将python安装目录下的Scripts目录加入了环境变量中,如果也确实加入了,可以重启再看一看。
如果还是不成功,可能你就需要手动安装一下pip了。需要手动安装的同学可以看下,手动安装我们参考官网介绍:https://pip.pypa.io/en/stable/installing/
首先我们需要戳这个下载相关文件:https://bootstrap.pypa.io/get-pip.py
然后运行命令在线安装pip:
python get-pip.py
如果我们保证pip已经安装好了,就来看一下如何使用吧。
我们有如下一些命令来使用:
# 通过pip在线安装三方库,如requests,这个命令最常使用,务必牢记
# 它会自动下载适合你目前安装的python的包并安装(如果包依赖于其他包,也会一并下载安装)
pip install requests
# 查看目前已安装的三方库列表
pip list
# 查看目前有哪些三方库有新版本了
pip list -o
# 如果pip不是最新版本,pip运行完一些命令时还会经常提醒你升级,升级pip自身的命令(一般也会给出)
# 从这个命令我们知道,前面加上python -m也能调用pip相关命令,适用于Scripts文件夹未加入环境变量的情况或升级自身的情况
python -m pip install --upgrade pip
# 查看pip的帮助
pip --help
# 升级某个三方包,有两种写法(一般来讲功能可以用就无需更新到最新版本,因为可能不兼容)
pip install --upgrade 包名
pip install -U 包名
# 卸载某个包
pip uninstall 包名
# 安装一个wheel包,如果已进入whl文件所在路径,直接写完整文件名,否则写完整路径(可加引号)
pip install 本地whl文件名
# 安装源码包
pip install 本地tar.gz文件名
# 顺带一提:也可以将该压缩包解压,cmd进入解压后的文件夹,运行如下命令安装:
python setup.py install
# 当包下载过慢的时候,设置使用国内镜像,你可以网上搜到很多,我们以清华源镜像为例:
# 帮助参考:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
# 临时一次性使用:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名
# 永久使用配置:
# 先升级pip最新版(需要>=10.0.0版本)
python -m pip install --upgrade pip
# 注意不要使用上述网站让你用的这个命令:pip install pip -U,实测卸载pip以后无法安装,会报找不到pip了
# 源设置:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 设置完之后按往常那样安装包即可
# 离线下载包(如果包依赖于其他包,也会一并下载)
pip download 包名
# 上述会在cmd当前目录下载包,你可以指定保存目录,更推荐
pip download -d 保存目录 要下载的包名
# 比如下载一个ipython包
pip download -d "E:\Programs\编程开发\python3\package\ipython" ipython
# 将离线下载好的包给不能联网的电脑离线安装:
pip install --no-index --find-links=下载的离线包保存目录 包名
# 比如安装ipython的包
pip install --no-index --find-links="E:\Programs\pythonpackage\for python3\ipython" ipython
# 冻结项目所用的三方包(后续我们会讲到虚拟环境,只会冻结虚拟环境中用到的包):
# 会将三方包的名称版本号写进requirements.txt这个文件中,供后续换电脑移植快速恢复三方包环境使用
# 约定俗称用requirements.txt,你喜欢也可以改为其他文件名
pip freeze > requirements.txt
# 如果新安装的电脑能联网
pip install -r requirements.txt
# 如果新安装的电脑无法联网
# 先找台能联网的电脑,批量下载这些三方包
pip download -d "保存目录路径" -r requirements.txt
# 新电脑批量安装本地离线包
# 这里可能的报错的情况是:当包分py2、py3版本却下载了错误版本时,当python安装的是32位的,但安装包是64位的时。
# 这时候到pypi官网下载正确适合的包即可。
pip install --find-links="下载的离线包保存目录" -r requirements.txt
# 搜索三方包
pip search 包名
基本上日常常用的pip命令就这些,大家可以只记住最基本的在线安装命令,因为多数时候我们也只用到这个命令而已。其他的命令,先做一个大致了解,当需要时再回来本次课程查阅即可。
本课涉及到的一些英语单词也比较多,我挑了比较重要的都列举出来了,大家可以看一下加强学习记忆。
当你都记住之后,上面的命令的记忆就基本不成问题了(偷偷告诉你,很多其他编程语言的管理工具的命令行工具的命令是类似的,记住之后对你很有帮助哦)。
单词释义
| 单词 | 释义 |
|---|---|
| python package index | python包索引,简称PyPI,全球的官方python包仓库 |
| search projects | 搜索项目 |
| requests | 请求request的复数 |
| pip | python的三方包管理工具 |
| install | 安装 |
| latest version | 最新的版本 |
| navigation | 导航 |
| project description | 项目描述 |
| release history | 发行历史 |
| download files | 下载文件 |
| filename, size | 文件名,大小 |
| file type | 文件类型 |
| wheel | 轮子 |
| source | 源码 |
| python version | python的版本 |
| hashes | 哈希值hash的复数 |
| scripts | 脚本script的复数 |
| upgrade | 升级 |
| uninstall | 卸载 |
| setup | 安装 |
| config | 配置 |
| set | 设置,动词 |
| global.index-url | global全局的,index-url首页地址 |
| download | 下载 |
| --no-index | 没有索引,其实我也没太搞懂这个参数用来干嘛的 |
| --find-links | 寻找链接,后面给个离线包的目录,告诉pip安装包从该目录下找 |
| freeze | 冻结 |
| requirements | 要求requirement的复数形式,约定俗称的冻结后保存的文件名 |
| search | 搜索 |